package com.candy.service.impl;

import com.candy.bean.LoginInfo;
import com.candy.dao.DBSourse;
import com.candy.service.UserManager;
import com.mysql.cj.Query;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

public class UserManagerImpl implements UserManager {
    @Override
    public int addUserInfo(String username, String userpwd) throws SQLException {
        //        链接数据库，从数据库中查询拿到登录信息
        String strsql="INSERT INTO logininfo(username,userpwd) VALUES('"+username+"','"+userpwd+"');";
//       调用DBHelper中的查询方法，查询用户输入的用户名与密码是否存在
//        使用DBUtils进行数据库操作
//        创建QueryRunner对象，此对象需要指定数据源
//        QueryRunner相当于JDBC中的Statemnt对象，用于执行增删改查操作
        QueryRunner queryRunner=new QueryRunner(DBSourse.getDataSource());
       int num= queryRunner.update(strsql);
        return num;
    }

    @Override
    public List<LoginInfo> getUserInfoes() throws SQLException {
        //        链接数据库，从数据库中查询拿到登录信息
        String strsql="SELECT * from logininfo;";
//       调用DBHelper中的查询方法，查询用户输入的用户名与密码是否存在
//        使用DBUtils进行数据库操作
//        创建QueryRunner对象，此对象需要指定数据源
//        QueryRunner相当于JDBC中的Statemnt对象，用于执行增删改查操作
        QueryRunner queryRunner=new QueryRunner(DBSourse.getDataSource());

//            执行查询操作需要调用query方法进行查询
//            query里面需要执行参数：第一个参数为需要执行的sql语句，第二个参数为转储类型
        List<LoginInfo> lb=  queryRunner.query(strsql,new BeanListHandler<>(LoginInfo.class));
        return lb;
    }

    @Override
    public LoginInfo getOneUserInfo(Integer userId) throws SQLException {

        //        链接数据库，从数据库中查询拿到登录信息
        String strsql="SELECT * from logininfo where id="+userId+";";
//       调用DBHelper中的查询方法，查询用户输入的用户名与密码是否存在
//        使用DBUtils进行数据库操作
//        创建QueryRunner对象，此对象需要指定数据源
//        QueryRunner相当于JDBC中的Statemnt对象，用于执行增删改查操作
        QueryRunner queryRunner=new QueryRunner(DBSourse.getDataSource());

//            执行查询操作需要调用query方法进行查询
//            query里面需要执行参数：第一个参数为需要执行的sql语句，第二个参数为转储类型
        List<LoginInfo> lb=  queryRunner.query(strsql,new BeanListHandler<>(LoginInfo.class));
        LoginInfo userInfo=lb.get(0);

        return userInfo;
    }

    @Override
    public int updateUserInfoById(Integer userId, String username, String userpwd) throws SQLException {
        //        链接数据库，从数据库中查询拿到登录信息
        String strsql="update logininfo SET username='"+username+"',userpwd='"+userpwd+"' WHERE id="+userId+";";
//       调用DBHelper中的查询方法，查询用户输入的用户名与密码是否存在
//        使用DBUtils进行数据库操作
//        创建QueryRunner对象，此对象需要指定数据源
//        QueryRunner相当于JDBC中的Statemnt对象，用于执行增删改查操作
        QueryRunner queryRunner=new QueryRunner(DBSourse.getDataSource());
        int num= queryRunner.update(strsql);
        return num;
    }

    @Override
    public int deleteUserInfoById(Integer userId) throws SQLException {
        //        链接数据库，从数据库中查询拿到登录信息
        String strsql="delete FROM logininfo WHERE id="+userId+";";
//       调用DBHelper中的查询方法，查询用户输入的用户名与密码是否存在
//        使用DBUtils进行数据库操作
//        创建QueryRunner对象，此对象需要指定数据源
//        QueryRunner相当于JDBC中的Statemnt对象，用于执行增删改查操作
        QueryRunner queryRunner=new QueryRunner(DBSourse.getDataSource());
        int num= queryRunner.update(strsql);
        return num;
    }
}
